<?php
/**
 * 百度鹰眼 Attribute 属性模块开放接口
 * 
 * 每个trace服务可以创建属性信息。属性信息与自定义字段的相同点是都可以由用户自主添加，不同点在于属性字段可以支持检索，
 * 每个service最多可以创建5个属性，最多有2个属性可以支持检索。
 */
class LbsAttribute extends LbsApiBasic 
{
	public function __construct($service_id=0){
		parent::__construct('attribute');
		$this->setServiceId($service_id);
	}
	
	/**
	 * 通过add接口，可以为某个service添加一个属性。
	 *
	 * @param String $attr_name 属性名称
	 * @param String $attr_desc 属性的描述信息
	 * @param Int $is_search 是否支持检索
	 * @return Boolean
	 */
	public function add($attr_name,$attr_desc='',$is_search=0)
	{
		$data = array('attr_name'=>$attr_name,'attr_desc'=>$attr_desc,'is_search'=>$is_search);
		if($res = $this->post('add',$data)){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 通过delete接口，可以删除一个service下的某个属性。
	 *
	 * @param String $attr_name 属性的名称
	 * @return Boolean
	 */
	public function delete($attr_name)
	{
		$data = array('attr_name'=>$attr_name);
		if($res = $this->post('delete',$data)){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 通过update接口，可以修改一个service下的某个属性信息。
	 *
	 * @param String $attr_name 属性名称
	 * @param String $attr_desc 属性的描述信息
	 * @param Int $is_search 是否支持检索
	 * @return Boolean
	 */
	public function update($attr_name,$attr_desc='',$is_search=0)
	{
		$data = array('attr_name'=>$attr_name,'attr_desc'=>$attr_desc,'is_search'=>$is_search);
		if($res = $this->post('update',$data)){
			return $res;
		}else{
			return false;
		}
	}
	
	/**
	 * 通过batchset接口，可以对同一个service下多个track的多个属性进行批量赋值。
	 *
	 * @param String $attrfile csv文件，每行对应一个track 不超过300k
	 * CSV文件格式参考：
		track_name,stuff_team,phone_num
		track001,team1,13800001111
		track002,team1,13800002222
		track003,team2,13800003333
		track004,team3,13800004444
		说明：stuff_team和phone_num为该service下的两个属性。CSV文件中track_name列和各属性列的顺序可以任意。
	 * @return Boolean
	 */
	public function batchset($attrfile)
	{
		$pathinfo = pathinfo($attrfile);
        $data = array();
        $data['attr_list'] = '@'.realpath($attrfile).";type=text/csv;filename=".$pathinfo['basename'];
		$res = $this->post('batchset',$data);
		return $res;
	}
	
	/**
	 * 本接口有问题，无法通过测试。
	 * 通过set接口，可以对某个track的一个或多个属性进行赋值。
	 * 
	 * @param String $track_name track的唯一标识
	 * @param String $attribute 属性的名称,每个代表该service下的一个属性
	 * @return Boolean
	 */
	public function set($track_name,$attribute)
	{
		$data = array('track_name'=>$track_name,'attribute-key'=>$attribute);
		if($res = $this->post('set',$data)){
			return true;
		}else{
			return false;
		}
	}
	
}
?>